import 'package:common_utils/common_utils.dart';
//
// /// Date Util.
extension MyDateUtil on DateUtil{
//   /// 是否是今天，根据年月日
//   static bool isTodayByYMD(int milliseconds) {
//     DateTime dateTime = getDateTimeByMs(milliseconds);
//     DateTime today = DateTime.now();
//     return dateTime.year == today.year &&
//         dateTime.month == today.month &&
//         dateTime.day == today.day;
//   }
//
//   /// 差几天
//   static int getDifferenceDay(int milliseconds1, int milliseconds2) {
//     DateTime dateTime1 = getDateTimeByMs(milliseconds1);
//     DateTime dateTime2 = getDateTimeByMs(milliseconds2);
//     return dateTime1.difference(dateTime2).inDays;
//   }
//
  static String getDiffTime(int time){
    var _newDate = DateTime.now();
    DateTime _diffDate = DateUtil.getDateTimeByMs(time);
    var _surplus = _newDate.isAfter(_diffDate) ? _newDate.difference(_diffDate) : _diffDate.difference(_newDate);
    int _day = (_surplus.inSeconds ~/ 3600) ~/ 24;
    if(_day >= 7){
      return DateUtil.formatDate(_diffDate, format: DateFormats.y_mo_d);
    }
    if(_day > 1 && _day < 7){
      return _day.toString() + "天前";
    }
    int hour = (_surplus.inSeconds ~/ 3600) % 24;
    if(hour > 0){
      return hour.toString() + "小时前";
    }
    int minute = _surplus.inSeconds % 3600 ~/ 60;
    if(minute > 0){
      return minute.toString() + "分前";
    }
    int second = _surplus.inSeconds % 60;
    return second.toString() + "秒前";
  }
//
//   static String getDiffTimeStr(int time){
//     DateTime _diffDate = getDateTimeByMs(time);
//     return CommonUtils.getNewsTimeStr(_diffDate);
//   }
//
//   ///
//   static DateTime getTodayByZero() {
//     String dateStr =
//         getDateStrByDateTime(DateTime.now(), format: DateFormat.YEAR_MONTH_DAY);
//     return getDateTime(dateStr);
//   }
//
//   static DateTime getNextDay(DateTime currentDay) {
//     return currentDay.add(Duration(days: 1));
//   }
//
//   /// get DateTime By DateStr.
//   static DateTime getDateTime(String dateStr, {bool isUtc}) {
//     DateTime dateTime = DateTime.tryParse(dateStr);
//     if (isUtc != null) {
//       if (isUtc) {
//         dateTime = dateTime.toUtc();
//       } else {
//         dateTime = dateTime.toLocal();
//       }
//     }
//     return dateTime;
//   }
//
//   /// get DateTime By Milliseconds.
//   static DateTime getDateTimeByMs(int milliseconds, {bool isUtc = false}) {
//     return milliseconds == null
//         ? null
//         : DateTime.fromMillisecondsSinceEpoch(milliseconds, isUtc: isUtc);
//   }
//
//   /// get DateMilliseconds By DateStr.
//   static int getDateMsByTimeStr(String dateStr) {
//     DateTime dateTime = DateTime.tryParse(dateStr);
//     return dateTime == null ? null : dateTime.millisecondsSinceEpoch;
//   }
//
//   /// get Now Date Milliseconds.
//   static int getNowDateMs() {
//     return DateTime.now().millisecondsSinceEpoch;
//   }
//
//   /// get Now Date Str.(yyyy-MM-dd HH:mm:ss)
//   static String getNowDateStr() {
//     return getDateStrByDateTime(DateTime.now());
//   }
//
//   /// get DateStr By DateStr.
//   /// dateStr         date String.
//   /// format          DateFormat type.
//   /// dateSeparate    date separate.
//   /// timeSeparate    time separate.
//   static String getDateStrByTimeStr(
//     String dateStr, {
//     DateFormat format = DateFormat.NORMAL,
//     String dateSeparate,
//     String timeSeparate,
//     bool isUtc,
//   }) {
//     return getDateStrByDateTime(getDateTime(dateStr, isUtc: isUtc),
//         format: format, dateSeparate: dateSeparate, timeSeparate: timeSeparate);
//   }
//
//   /// get DateStr By Milliseconds.
//   /// milliseconds    milliseconds.
//   /// format          DateFormat type.
//   /// dateSeparate    date separate.
//   /// timeSeparate    time separate.
//   static String getDateStrByMs(int milliseconds,
//       {DateFormat format = DateFormat.NORMAL,
//       String dateSeparate,
//       String timeSeparate,
//       bool isUtc = false}) {
//     DateTime dateTime = getDateTimeByMs(milliseconds, isUtc: isUtc);
//     return getDateStrByDateTime(dateTime,
//         format: format, dateSeparate: dateSeparate, timeSeparate: timeSeparate);
//   }
//
//   /// get DateStr By DateTime.
//   /// dateTime        dateTime.
//   /// format          DateFormat type.
//   /// dateSeparate    date separate.
//   /// timeSeparate    time separate.
//   static String getDateStrByDateTime(DateTime dateTime,
//       {DateFormat format = DateFormat.NORMAL,
//       String dateSeparate,
//       String timeSeparate}) {
//     if (dateTime == null) return null;
//     String dateStr = dateTime.toString();
//     if (isZHFormat(format)) {
//       dateStr = formatZHDateTime(dateStr, format, timeSeparate);
//     } else {
//       dateStr = formatDateTime(dateStr, format, dateSeparate, timeSeparate);
//     }
//     return dateStr;
//   }
//
//   /// format ZH DateTime.
//   /// time            time string.
//   /// format          DateFormat type.
//   ///timeSeparate    time separate.
//   static String formatZHDateTime(
//       String time, DateFormat format, String timeSeparate) {
//     time = convertToZHDateTimeString(time, timeSeparate);
//     switch (format) {
//       case DateFormat.ZH_NORMAL: //yyyy年MM月dd日 HH时mm分ss秒
//         time = time.substring(
//             0,
//             "yyyy年MM月dd日 HH时mm分ss秒".length -
//                 (timeSeparate == null || timeSeparate.isEmpty ? 0 : 1));
//         break;
//       case DateFormat.ZH_YEAR_MONTH_DAY_HOUR_MINUTE: //yyyy年MM月dd日 HH时mm分
//         time = time.substring(
//             0,
//             "yyyy年MM月dd日 HH时mm分".length -
//                 (timeSeparate == null || timeSeparate.isEmpty ? 0 : 1));
//         break;
//       case DateFormat.ZH_YEAR_MONTH_DAY: //yyyy年MM月dd日
//         time = time.substring(0, "yyyy年MM月dd日".length);
//         break;
//       case DateFormat.ZH_YEAR_MONTH: //yyyy年MM月
//         time = time.substring(0, "yyyy年MM月".length);
//         break;
//       case DateFormat.ZH_MONTH_DAY: //MM月dd日
//         time = time.substring("yyyy年".length, "yyyy年MM月dd日".length);
//         break;
//       case DateFormat.ZH_MONTH_DAY_HOUR_MINUTE: //MM月dd日 HH时mm分
//         time = time.substring(
//             "yyyy年".length,
//             "yyyy年MM月dd日 HH时mm分".length -
//                 (timeSeparate == null || timeSeparate.isEmpty ? 0 : 1));
//         break;
//       case DateFormat.ZH_HOUR_MINUTE_SECOND: //HH时mm分ss秒
//         time = time.substring(
//             "yyyy年MM月dd日 ".length,
//             "yyyy年MM月dd日 HH时mm分ss秒".length -
//                 (timeSeparate == null || timeSeparate.isEmpty ? 0 : 1));
//         break;
//       case DateFormat.ZH_HOUR_MINUTE: //HH时mm分
//         time = time.substring(
//             "yyyy年MM月dd日 ".length,
//             "yyyy年MM月dd日 HH时mm分".length -
//                 (timeSeparate == null || timeSeparate.isEmpty ? 0 : 1));
//         break;
//       default:
//         break;
//     }
//     return time;
//   }
//
//   /// format DateTime.
//   /// time            time string.
//   /// format          DateFormat type.
//   /// dateSeparate    date separate.
//   /// timeSeparate    time separate.
//   static String formatDateTime(String time, DateFormat format,
//       String dateSeparate, String timeSeparate) {
//     switch (format) {
//       case DateFormat.NORMAL: //yyyy-MM-dd HH:mm:ss
//         time = time.substring(0, "yyyy-MM-dd HH:mm:ss".length);
//         break;
//       case DateFormat.YEAR_MONTH_DAY_HOUR_MINUTE: //yyyy-MM-dd HH:mm
//         time = time.substring(0, "yyyy-MM-dd HH:mm".length);
//         break;
//       case DateFormat.YEAR_MONTH_DAY: //yyyy-MM-dd
//         time = time.substring(0, "yyyy-MM-dd".length);
//         break;
//       case DateFormat.YEAR_MONTH: //yyyy-MM
//         time = time.substring(0, "yyyy-MM".length);
//         break;
//       case DateFormat.MONTH_DAY: //MM-dd
//         time = time.substring("yyyy-".length, "yyyy-MM-dd".length);
//         break;
//       case DateFormat.MONTH_DAY_HOUR_MINUTE: //MM-dd HH:mm
//         time = time.substring("yyyy-".length, "yyyy-MM-dd HH:mm".length);
//         break;
//       case DateFormat.HOUR_MINUTE_SECOND: //HH:mm:ss
//         time =
//             time.substring("yyyy-MM-dd ".length, "yyyy-MM-dd HH:mm:ss".length);
//         break;
//       case DateFormat.HOUR_MINUTE: //HH:mm
//         time = time.substring("yyyy-MM-dd ".length, "yyyy-MM-dd HH:mm".length);
//         break;
//       default:
//         break;
//     }
//     time = dateTimeSeparate(time, dateSeparate, timeSeparate);
//     return time;
//   }
//
//   /// is format to ZH DateTime String
//   static bool isZHFormat(DateFormat format) {
//     return format == DateFormat.ZH_DEFAULT ||
//         format == DateFormat.ZH_NORMAL ||
//         format == DateFormat.ZH_YEAR_MONTH_DAY_HOUR_MINUTE ||
//         format == DateFormat.ZH_YEAR_MONTH_DAY ||
//         format == DateFormat.ZH_YEAR_MONTH ||
//         format == DateFormat.ZH_MONTH_DAY ||
//         format == DateFormat.ZH_MONTH_DAY_HOUR_MINUTE ||
//         format == DateFormat.ZH_HOUR_MINUTE_SECOND ||
//         format == DateFormat.ZH_HOUR_MINUTE;
//   }
//
//   /// convert To ZH DateTime String
//   static String convertToZHDateTimeString(String time, String timeSeparate) {
//     time = time.replaceFirst("-", "年");
//     time = time.replaceFirst("-", "月");
//     time = time.replaceFirst(" ", "日 ");
//     if (timeSeparate == null || timeSeparate.isEmpty) {
//       time = time.replaceFirst(":", "时");
//       time = time.replaceFirst(":", "分");
//       time = time.replaceFirst(".", "秒");
//       time = time + "毫秒";
//     } else {
//       time = time.replaceAll(":", timeSeparate);
//     }
//     return time;
//   }
//
//   /// date Time Separate.
//   static String dateTimeSeparate(
//       String time, String dateSeparate, String timeSeparate) {
//     if (dateSeparate != null) {
//       time = time.replaceAll("-", dateSeparate);
//     }
//     if (timeSeparate != null) {
//       time = time.replaceAll(":", timeSeparate);
//     }
//     return time;
//   }
//
//   /// format date by milliseconds.
//   /// milliseconds 日期毫秒
//   static String formatDateMs(int milliseconds,
//       {bool isUtc = false, String format}) {
//     return formatDate(getDateTimeByMs(milliseconds, isUtc: isUtc),
//         format: format);
//   }
//
//   /// format date by date str.
//   /// dateStr 日期字符串
//   static String formatDateStr(String dateStr, {bool isUtc, String format}) {
//     return formatDate(getDateTime(dateStr, isUtc: isUtc), format: format);
//   }
//
//   /// format date by DateTime.
//   /// format 转换格式(已提供常用格式 DataFormats，可以自定义格式："yyyy/MM/dd HH:mm:ss")
//   /// 格式要求
//   /// year -> yyyy/yy   month -> MM/M    day -> dd/d
//   /// hour -> HH/H      minute -> mm/m   second -> ss/s
//   static String formatDate(DateTime dateTime, {bool isUtc, String format}) {
//     if (dateTime == null) return "";
//     format = format ?? DataFormats.full;
//     if (format.contains("yy")) {
//       String year = dateTime.year.toString();
//       if (format.contains("yyyy")) {
//         format = format.replaceAll("yyyy", year);
//       } else {
//         format = format.replaceAll(
//             "yy", year.substring(year.length - 2, year.length));
//       }
//     }
//
//     format = _comFormat(dateTime.month, format, 'M', 'MM');
//     format = _comFormat(dateTime.day, format, 'd', 'dd');
//     format = _comFormat(dateTime.hour, format, 'H', 'HH');
//     format = _comFormat(dateTime.minute, format, 'm', 'mm');
//     format = _comFormat(dateTime.second, format, 's', 'ss');
//     format = _comFormat(dateTime.millisecond, format, 'S', 'SSS');
//
//     return format;
//   }
//
//   /// com format.
//   static String _comFormat(
//       int value, String format, String single, String full) {
//     if (format.contains(single)) {
//       if (format.contains(full)) {
//         format =
//             format.replaceAll(full, value < 10 ? '0$value' : value.toString());
//       } else {
//         format = format.replaceAll(single, value.toString());
//       }
//     }
//     return format;
//   }
//
//   /// get WeekDay By Milliseconds.
//   static String getWeekDayByMs(int milliseconds, {bool isUtc = false}) {
//     DateTime dateTime = getDateTimeByMs(milliseconds, isUtc: isUtc);
//     return getWeekDay(dateTime);
//   }
//
//   /// get ZH WeekDay By Milliseconds.
//   static String getZHWeekDayByMs(int milliseconds, {bool isUtc = false}) {
//     DateTime dateTime = getDateTimeByMs(milliseconds, isUtc: isUtc);
//     return getZHWeekDay(dateTime);
//   }
//
//   static String getZHWeekZDayByMs(int milliseconds, {bool isUtc = false}) {
//     DateTime dateTime = getDateTimeByMs(milliseconds, isUtc: isUtc);
//     return getZHWeekZDay(dateTime);
//   }
//
//   /// get WeekDay.
//   static String getWeekDay(DateTime dateTime) {
//     if (dateTime == null) return null;
//     String weekday;
//     switch (dateTime.weekday) {
//       case 1:
//         weekday = "Monday";
//         break;
//       case 2:
//         weekday = "Tuesday";
//         break;
//       case 3:
//         weekday = "Wednesday";
//         break;
//       case 4:
//         weekday = "Thursday";
//         break;
//       case 5:
//         weekday = "Friday";
//         break;
//       case 6:
//         weekday = "Saturday";
//         break;
//       case 7:
//         weekday = "Sunday";
//         break;
//       default:
//         break;
//     }
//     return weekday;
//   }
//
//
//   /// get ZH WeekDay.
//   static String getZHWeekZDay(DateTime dateTime) {
//     if (dateTime == null) return null;
//     String weekday;
//     switch (dateTime.weekday) {
//       case 1:
//         weekday = "周一";
//         break;
//       case 2:
//         weekday = "周二";
//         break;
//       case 3:
//         weekday = "周三";
//         break;
//       case 4:
//         weekday = "周四";
//         break;
//       case 5:
//         weekday = "周五";
//         break;
//       case 6:
//         weekday = "周六";
//         break;
//       case 7:
//         weekday = "周日";
//         break;
//       default:
//         break;
//     }
//     return weekday;
//   }
//
//   /// get ZH WeekDay.
//   static String getZHWeekDay(DateTime dateTime) {
//     if (dateTime == null) return null;
//     String weekday;
//     switch (dateTime.weekday) {
//       case 1:
//         weekday = "星期一";
//         break;
//       case 2:
//         weekday = "星期二";
//         break;
//       case 3:
//         weekday = "星期三";
//         break;
//       case 4:
//         weekday = "星期四";
//         break;
//       case 5:
//         weekday = "星期五";
//         break;
//       case 6:
//         weekday = "星期六";
//         break;
//       case 7:
//         weekday = "星期日";
//         break;
//       default:
//         break;
//     }
//     return weekday;
//   }
//
//   /// Return whether it is leap year.
//   static bool isLeapYearByDateTime(DateTime dateTime) {
//     return isLeapYearByYear(dateTime.year);
//   }
//
//   /// Return whether it is leap year.
//   static bool isLeapYearByYear(int year) {
//     return year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
//   }
//
//   /// is yesterday by millis.
//   /// 是否是昨天.
//   static bool isYesterdayByMillis(int millis, int locMillis) {
//     return isYesterday(DateTime.fromMillisecondsSinceEpoch(millis),
//         DateTime.fromMillisecondsSinceEpoch(locMillis));
//   }
//
//   /// is yesterday by dateTime.
//   /// 是否是昨天.
//   static bool isYesterday(DateTime dateTime, DateTime locDateTime) {
//     if (yearIsEqual(dateTime, locDateTime)) {
//       int spDay = getDayOfYear(locDateTime) - getDayOfYear(dateTime);
//       return spDay == 1;
//     } else {
//       return ((locDateTime.year - dateTime.year == 1) &&
//           dateTime.month == 12 &&
//           locDateTime.month == 1 &&
//           dateTime.day == 31 &&
//           locDateTime.day == 1);
//     }
//   }
//
//   /// get day of year.
//   /// 在今年的第几天.
//   static int getDayOfYearByMillis(int millis, {bool isUtc = false}) {
//     return getDayOfYear(
//         DateTime.fromMillisecondsSinceEpoch(millis, isUtc: isUtc));
//   }
//
//   /// get day of year.
//   /// 在今年的第几天.
//   static int getDayOfYear(DateTime dateTime) {
//     int year = dateTime.year;
//     int month = dateTime.month;
//     int days = dateTime.day;
//     for (int i = 1; i < month; i++) {
//       days = days + MONTH_DAY[i];
//     }
//     if (isLeapYearByYear(year) && month > 2) {
//       days = days + 1;
//     }
//     return days;
//   }
//
//   /// year is equal.
//   /// 是否同年.
//   static bool yearIsEqualByMillis(int millis, int locMillis) {
//     return yearIsEqual(DateTime.fromMillisecondsSinceEpoch(millis),
//         DateTime.fromMillisecondsSinceEpoch(locMillis));
//   }
//
//   /// year is equal.
//   /// 是否同年.
//   static bool yearIsEqual(DateTime dateTime, DateTime locDateTime) {
//     return dateTime.year == locDateTime.year;
//   }
//
//   /// is today.
//   /// 是否是当天.
//   static bool isToday(int milliseconds, {bool isUtc = false}) {
//     if (milliseconds == null || milliseconds == 0) return false;
//     DateTime old =
//         DateTime.fromMillisecondsSinceEpoch(milliseconds, isUtc: isUtc);
//     DateTime now = isUtc ? DateTime.now().toUtc() : DateTime.now().toLocal();
//     return old.year == now.year && old.month == now.month && old.day == now.day;
//   }
//
//   /// is Week.
//   /// 是否是本周.
//   static bool isWeek(int milliseconds, {bool isUtc = false}) {
//     if (milliseconds == null || milliseconds <= 0) {
//       return false;
//     }
//     DateTime _old =
//         DateTime.fromMillisecondsSinceEpoch(milliseconds, isUtc: isUtc);
//     DateTime _now = isUtc ? DateTime.now().toUtc() : DateTime.now().toLocal();
//     DateTime old =
//         _now.millisecondsSinceEpoch > _old.millisecondsSinceEpoch ? _old : _now;
//     DateTime now =
//         _now.millisecondsSinceEpoch > _old.millisecondsSinceEpoch ? _now : _old;
//     return (now.weekday >= old.weekday) &&
//         (now.millisecondsSinceEpoch - old.millisecondsSinceEpoch <=
//             7 * 24 * 60 * 60 * 1000);
//   }
}
